Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

145
Visualizações
Matriz unidimensional de Javascript de objeto "como" Filtro

Tengo una matriz unidimensional de objetos como este:

 var data = [ { "empId": 63758, "empCode": "000003A", "empName": "Robert", }, { "empId": 63759, "empCode": "000003B", "empName": "Paul John", }, { "empId": 63760, "empCode": "000003C", "empName": "Chris John", }, ];

Quiero filtrar los datos de la misma manera que cuando usamos en la consulta sql "como '% john %'", y deseo que también pueda obtener texto que no distinga entre mayúsculas y minúsculas. por lo que dará salida:

 var data = [= { "empId": 63759, "empCode": "000003B", "empName": "Paul John", }, { "empId": 63760, "empCode": "000003C", "empName": "Chris John", }, ];

Ya intenté esto, pero el resultado es solo aceptar el parámetro de texto completo como "Chris John"

 var filter = { "empName": "Chris John" } data = data.filter(function(item){ for(var key in filter){ if(item[key] == undefined || item[key] != filter[key]) return false } return true });

por favor ayuda, gracias

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Simplemente puede lograr esto usando String.indexOf() junto con el método Array.filter() .

Demostración en vivo :

 var data = [ { "empId": 63758, "empCode": "000003A", "empName": "Robert", },{ "empId": 63759, "empCode": "000003B", "empName": "Paul John", },{ "empId": 63760, "empCode": "000003C", "empName": "Chris John", } ]; const filter = { "empName": "john" }; let res = data.filter(({ empName }) => empName.toLowerCase().indexOf(filter.empName) !== -1); console.log(res);

about 4 years ago · Santiago Trujillo Relatório

0

Puede escribir otro método de utilidad para verificar los valores de la subcadena como se muestra a continuación:

 var data = [ { empId: 63758, empCode: "000003A", empName: "Robert", }, { empId: 63759, empCode: "000003B", empName: "Paul John", }, { empId: 63760, empCode: "000003C", empName: "Chris John", }, ]; var filter = { empName: "joh", }; const checkLikeValue = (a, b) => { if(a === b) { return true } else if (typeof a === "string") { const substrings = a.split(" "); return substrings.some(str => b.toLowerCase().includes(str)) } return false } data = data.filter(function (item) { for (var key in filter) { if (item[key] == undefined || !checkLikeValue(filter[key], item[key])) return false; } return true; }); console.log(data);

about 4 years ago · Santiago Trujillo Relatório

0

Esto se puede lograr usando include( includes() así como indexOf() (según la respuesta dada por @Rohit Jindal).

Otro enfoque sería usar includes .

 var data = [ { "empId": 63758, "empCode": "000003A", "empName": "Robert", },{ "empId": 63759, "empCode": "000003B", "empName": "Paul John", },{ "empId": 63760, "empCode": "000003C", "empName": "Chris John", } ]; const filter = { "empName": "john" }; let res = data.filter(({ empName }) => empName.toLowerCase().includes(filter.empName)); console.log(res);

La única diferencia sería una verificación adicional del valor de retorno de indexOf() que no es necesario cuando se usa include( includes() . En cuanto al rendimiento, ambos relojes son casi iguales.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda